﻿/**
 * @file PyFITKPhyscisPropRibbed.h
 * @brief 加筋板物理属性 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_PHYSICSPROP_RIBBED_H___
#define _PY_PHYSICSPROP_RIBBED_H___

#include <QString>
#include "FITKAcousticsPhysicsAPI.h"
#include "PyFITKPhyscisPropBase.h"

namespace Acoustics
{

    /**
     * @brief 加筋板物理属性 为python装饰器接口准备的封装类
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    class FITKAcousticsPhysicsAPI PyFITKPhyscisPropRibbed : public PyFITKPhyscisPropBase
    {
    public:
        explicit PyFITKPhyscisPropRibbed(const QString& name);
        explicit PyFITKPhyscisPropRibbed() = default;
        virtual ~PyFITKPhyscisPropRibbed() = default;   
        /**
         * @brief  设置第一条筋
         * @param[i] beam :梁
         * @param[i] spacing :加筋间距
         * @param[i] dev：  标准差
         * @param[i] offset :加筋梁截面中心偏移
         * @param[i] orientation ：梁截面方向角度,0,90,180,270
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setRibs_1(const QString& beam, double spacing, double dev, double offset, double orientation);
        /**
         * @brief  设置第二条筋
         * @param[i] beam :梁
         * @param[i] spacing :加筋间距
         * @param[i] dev：  标准差
         * @param[i] offset :加筋梁截面中心偏移
         * @param[i] orientation ：梁截面方向角度,0,90,180,270
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setRibs_2(const QString& beam, double spacing, double dev, double offset, double orientation);
        /**
         * @brief  禁用第二条筋，禁用后，如果想启用第二条筋，需要重新设置一遍第二条筋的属性
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool disableRibs_2();
        /**
         * @brief  设置角度
         * @param[i] angle :角度
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setBaseAngle(double angle);
        /**
         * @brief  设置基板
         * @param[i] skinName: 板名（包括均质板和多层板）
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setSkinSection(const QString& skinName);
        /**
         * @brief  创建物理属性
         * @param[i] name :名称
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool createPhyscisProp(const QString& name);
    };
}
#endif

